user_infoList = [
    {'user_id':'1', 'user_account': 'zhangsan', 'user_password': '123321', 'user_name': '张三', 'user_balance': 10000.00},
    {'user_id':'2', 'user_account': 'lisi', 'user_password': '123456', 'user_name': '李四', 'user_balance': 3000.00},
    {'user_id':'3', 'user_account': 'wangwu', 'user_password': 'aaccdd', 'user_name': '王五', 'user_balance': 20000.00}
]


def bank_main():
    print("============欢迎使用银行自助系统============")
    print("1.登录系统                        0.退出系统")
    print("==========================================")


def login_main():
    print("==================用户登录==================")
    user_index = 0
    user_account = input('请输入您的账号：')
    user_password = input('请输入您的密码：')
    for list_index, user_info in enumerate(user_infoList):
        if user_info['user_account'] == user_account and user_info['user_password'] == user_password:
            user_index = list_index
            break
    else:
        print('账号或密码错误！')
        return
    user_main(user_index)
    return


def user_main(user_index):
    while True:
        print("================用户操作页面================")
        print("欢迎您,%s" % user_infoList[user_index]['user_name'])
        print("您的存款余额为：", user_infoList[user_index]['user_balance'])
        print()
        print("1.存款                                2.取款")
        print("3.转账                                4.查询余额")
        print("0.注销                                     ")
        print("==========================================")
        i = input("请输入要执行的编号：")
        if i == '1':
            add_balance(user_index)
        elif i == '2':
            draw_balance(user_index)
        elif i == '3':
            transfer_balance(user_index)
        elif i == '4':
            find_balance(user_index)
        elif i == '0':
            break
        else:
            print("输入的操作编号有误！")


def add_balance(user_index):
    """存款系统"""
    print("==========================================")
    moneys = input("请输入您的存款余额(输入0退出取款)：")
    while True:
        if moneys == '0':
            return
        if moneys.count('.') > 1:
            moneys = input("请输入正确的存款余额(输入0退出取款)：")
        elif moneys.count('.') == 1:
            if not moneys.split('.')[0].isdigit() or not moneys.split('.')[1].isdigit():
                moneys = input("请输入正确的存款余额(输入0退出取款)：")
            else:
                break
        elif not moneys.isdigit() or int(moneys) <= 0:
            moneys = input("请输入正确的存款余额：")
        else:
            break
    user_infoList[user_index]['user_balance'] += float(moneys)
    print("已存入%f" % float(moneys), '元')
    input('按回车键继续......')
    print("==========================================")


def draw_balance(user_index):
    """取款系统"""
    print("==========================================")
    moneys = input("请输入您的取款余额(输入0退出取款)：")
    while True:
        if moneys == '0':
            return
        if moneys.count('.') > 1:
            moneys = input("请输入正确的取款余额(输入0退出取款)：")
        elif moneys.count('.') == 1:
            if not moneys.split('.')[0].isdigit() or not moneys.split('.')[1].isdigit():
                moneys = input("请输入正确的取款余额(输入0退出取款)：")
            else:
                break
        elif not moneys.isdigit() or int(moneys) <= 0:
            moneys = input("请输入正确的取款余额(输入0退出取款)：")
        elif user_infoList[user_index]['user_balance'] < float(moneys):
            print('您的余额不足！！')
            input('按回车键继续......')
            return
        else:
            break
    user_infoList[user_index]['user_balance'] -= float(moneys)
    print("已取出%f" % float(moneys), '元')
    input('按回车键继续......')
    print("==========================================")


def transfer_balance(user_index):
    """转账系统"""
    print("==========================================")
    # 设置被转账人的索引值
    user_index2 = 0
    user_account = input("请输入您要转账的账户(输入0退出转账)：")
    while True:
        if user_account == '0':
            return
        # 找到保存该账户的索引值
        for indexs, user_info in enumerate(user_infoList):
            if user_info['user_account'] == user_account:
                user_index2 = indexs
                break
        else:
            user_account = input("没有找到该用户，请确认后重新输入(输入0退出转账)：")
        # 找到退出循环
        if user_index2 != 0:
            break
    moneys = input("请输入您的转账金额：")
    while True:
        # 判断是否输入了多个小数点
        if moneys.count('.') > 1:
            moneys = input("请输入正确的转账金额：")
        # 如果只有一个小数点，则判断小数点前后是否都是数字
        elif moneys.count('.') == 1:
            if not moneys.split('.')[0].isdigit() or not moneys.split('.')[1].isdigit():
                moneys = input("请输入正确的转账金额：")
            else:
                break
        # 如果没有小数点，则判断金额是否是数字同时大于0
        elif not moneys.isdigit() or int(moneys) <= 0:
            moneys = input("请输入正确的转账金额：")
        elif user_infoList[user_index]['user_balance'] < float(moneys):
            print('您的余额不足！！')
            input('按回车键继续......')
            return
        else:
            break
    user_infoList[user_index]['user_balance'] -= float(moneys)
    user_infoList[user_index2]['user_balance'] += float(moneys)
    print("已转账%f" % float(moneys), '元')
    input('按回车键继续......')
    print("==========================================")


def find_balance(user_index):
    """余额查询"""
    print("您的余额为：%f元"% user_infoList[user_index]['user_balance'])
    input("按回车键继续......")
    print("==========================================")

